

#ifndef EVT_IMP_BY_TEMPLATE__
#define EVT_IMP_BY_TEMPLATE__

#include "Event/EvtIf.h"

template<int GRP_ID>
class TCOM_API EvtImpT : public IEvt
{
public:
	EvtImpT(int nID, int nArgX = 0, int nArgY = 0, int nArgZ = 0)
		:m_nID(nID),
		m_nArgX(nArgX),
		m_nArgY(nArgY),
		m_nArgZ(nArgZ)
	{;}

	//	
	//	ID
	//
	virtual void	setID(int nID) {	m_nID = nID;}
	virtual int		getID()const {	return m_nID;		}

	//
	//	Group ID
	//
	virtual void	setGroupID(int nGrpID) {	;}
	virtual int		getGroupID()const {	return GRP_ID;		}


	virtual int getDataX()const {	return m_nArgX;		}
	virtual int getDataY()const {	return m_nArgY;		}
	virtual int getDataZ()const {	return m_nArgZ;		}

	virtual void setDataX(int nArg) {	m_nArgX = nArg;}
	virtual void setDataY(int nArg) {	m_nArgY = nArg;}
	virtual void setDataZ(int nArg) {	m_nArgZ = nArg;}

	virtual	int		getData(const short& nIdx, int nDefault)const	{	return 0;	}
	virtual void	setData(const short& nIdx, int nValue)			{	;}

	virtual	int		getData(const char* szKey, int nDefault = 0)const	{	return 0;	}
	virtual void	setData(const char* szKey, int nValue)				{}

	virtual	int		getData(const char* szKey, string& sValue)const		{	return 0;	}
	virtual void	setData(const char* szKey, const string& sValue)	{}

	//
	//	some event can have the ability to clone himself
	//
	virtual	IEvt*	clone()	{	return	NULL;	}

protected:
	int m_nID;

	int m_nArgX;
	int m_nArgY;
	int m_nArgZ;
};



#endif // 
